---
title: Dependencies
summary: Internal libraries, external packages, framework components, consumed services, and database connections.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-22
---

# Dependencies

This host depends on the `SAIF.Framework.Core`/`SAIF.Framework.Common`/`SAIF.Framework.Data.NHibernate` package family for configuration, contracts, and persistence, has no dependency-injection container, vendors one binary directly into source control, calls one downstream SOAP service, and reads from four database connections across Oracle and SQL Server.

## Internal dependencies

| Dependency | Reference Type | Project path | Usage |
| --- | --- | --- | --- |
| `SAIF.Framework.Common` | NuGet Package | — | Shared framework primitives and logging surface |
| `SAIF.Framework.Core` | NuGet Package | — | Environment API configuration retrieval and the transitively supplied service contracts (`SAIF.Services.WCF.Contracts`) |
| `SAIF.Framework.Data.NHibernate` | NuGet Package | — | `NHibernateUnitOfWork`, `OracleUnitOfWorkFactory`, `SqlServerUnitOfWorkFactory`, `OracleConfigurationFactory`, `SqlServerConfigurationFactory`, `Repository<T>`, `IRepository<T>`, `IRepositoryFactory`, `DbConnectionManager` |
| `SAIF.HashUtil` | NuGet Package | — | Framework closure; unused by host source |
| `SAIF.Web.API.Clients` | NuGet Package | — | Framework closure; unused by host source |

## External dependencies

| Dependency | Version | Usage |
| --- | --- | --- |
| `System.ServiceModel` | .NET Framework 4.6.2 | WCF contracts, hosting, and dispatch |
| `System.ServiceModel.Activation` | .NET Framework 4.6.2 | `ServiceHostFactory` and `ServiceRoute` activation |
| `NHibernate` | 4.0.3.4000 | ORM for all four units of work |
| `FluentNHibernate` | 2.0.1.0 | NHibernate mapping closure |
| `Iesi.Collections` | 4.0.1.4000 | NHibernate collection support |
| `Oracle.ManagedDataAccess` | 21.5.0 | Managed ODP.NET provider for the three Oracle connections |
| `FluentValidation` | 5.5.0.0 | Framework closure; unused by host source |
| `log4net` | 2.0.5 | Framework logging closure |
| `Newtonsoft.Json` | 8.0.3 | Framework serialization closure |
| `RestSharp` | 106.12.0 | Framework HTTP client closure |
| `Autofac` | 3.5.2 | Referenced but unused by this host's source (see [Tech debt](tech-debt.md)) |

## Vendored assemblies

| Assembly | HintPath | Version | Source of truth | Usage |
| --- | --- | --- | --- | --- |
| `SAIFConnection.dll` | `..\Libs\SAIF\SAIFConnection.dll` | 1.8.5.0 | Checked in under `src/WCF/Libs/SAIF/`; not determined from source beyond that | Referenced by `WCF.csproj` only — no host source file references its types; present for the framework closure's benefit |

This assembly is a checked-in binary with `<SpecificVersion>False</SpecificVersion>`, is not a NuGet package, and does not appear in `packages.config`. It cannot be restored, upgraded, or audited through the package pipeline; see [Tech debt](tech-debt.md).

## Transitive dependencies

| Dependency | Source framework | Type | Usage |
| --- | --- | --- | --- |
| `SAIF.Services.WCF.Contracts` | `SAIF.Framework.Core` | Transitive | Declares the six `[ServiceContract]` interfaces this host implements; not referenced directly and not present in the repository* |
| `SAIF.Core.Contracts`, `SAIF.Services.Common`, `SAIF.Services.Utilities`, `SAIF.Services.ClientProxies` | `SAIF.Framework.Core` | Transitive | Supporting types used across the six services, including `ApplicationExceptionDetail`* |

## Service dependencies

| Service | Protocol | Called from | Endpoint source | Documentation | Usage |
| --- | --- | --- | --- | --- | --- |
| `Legacy.Fax` | SOAP | `FaxServiceProxy.SendFax` (`src/WCF/SAIF.Services.WCF.Host/Services/LegacyProxies/FaxServiceProxy.cs`) | `EnvironmentConfigKeys.FaxSoapServiceUrl` resolved through `WcfEnvironmentService`, passed as a constructor argument to `FaxServiceProxy` — the `<client><endpoint name="FaxServiceSoap">` entry in `Web.Base.config` is present but unused by this code path | [Docs](../../clients/legacy-fax/index.md) | Outbound fax dispatch behind `FaxService.SendFax` |

## Database connections

**The pool code is not the Oracle schema.** Each value below is the final argument passed to `DbConnectionManager.GetOracleConnectionString`/`GetSqlServerConnectionString` — a SAIF-specific pool code forwarded to a legacy connect-info SOAP service that resolves the actual Oracle user/schema server-side. See [Configuration](configuration.md) for the caveat.

| Database | Pool code | Access method | Resolved by | Usage |
| --- | --- | --- | --- | --- |
| Oracle | `CLM` | NHibernate `IUnitOfWorkFactory` (`OracleUnitOfWorkFactory`) | `DbConnectionManager.GetOracleConnectionString(env, EnvironmentConfigKeys.OracleDatabase, "CLM")` | `PreferenceService` persistence |
| Oracle | `IMG` | NHibernate `IUnitOfWorkFactory` (`OracleUnitOfWorkFactory`) | `DbConnectionManager.GetOracleConnectionString(_environmentSvc, EnvironmentConfigKeys.OracleDatabase, "IMG")` | `ImagingService` image id reservation and queuing |
| Oracle | `EXTUR` | NHibernate `IUnitOfWorkFactory` (`OracleUnitOfWorkFactory`) | `DbConnectionManager.GetOracleConnectionString(_environmentService, EnvironmentConfigKeys.OracleDatabase, "EXTUR")` | `SecurityService` user/employee resolution |
| SQL Server | `NETFRAMEWORK` / `APPM` | NHibernate `IUnitOfWorkFactory` (`SqlServerUnitOfWorkFactory`) | `DbConnectionManager.GetSqlServerConnectionString(env, EnvironmentConfigKeys.NetFrameworkSqlServer, "NETFRAMEWORK", "APPM")` | `WebContextService` persistence |

See [Configuration](configuration.md) for the full resolution-call detail and [Data model](data-model.md) for the table inventory behind each connection.

## Dependency risks and notes
- **No dependency-injection container** — every collaborator across all six services is constructed with `new` against a concrete class inside a parameterless constructor or a per-call method. `Autofac` 3.5.2 is referenced but unused. See [Tech debt](tech-debt.md).
- **`SAIFConnection.dll` is a vendored binary** with no package identity, no version manifest, and no restore path (above).
- **The `ImagingService` route name is duplicated across two hosts.** `SAIF.Services.WCF32.Host` also registers a route named `Imaging`, but backed by an entirely different class and contract (`SAIF.Services.WCF.Imaging.WCF32.IImagingService`, x86) than this host's `ImagingService` (`SAIF.Services.WCF.Contracts.IImagingService`, x64). They are not two deployments of one implementation; see [Activation and hosting](activation-hosting.md). `SAIF.Services.WCF32.Host` is not documented in this run (no pipeline reference, no `.nuspec` reference).
- **`Legacy.Fax` is the only downstream SOAP dependency in this host**, reached exclusively from `FaxService.SendFax`; the other five services perform no outbound service calls beyond their own database connections.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Activation and hosting](activation-hosting.md)
- [Operations](operations.md)
- [Faults and error pipeline](faults.md)
- [Authentication and authorization](authentication-authorization.md)
- [Configuration](configuration.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Data model](data-model.md)
- [Operational runbook](operational-runbook.md)
- [Tech debt](tech-debt.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts. Statements marked with `**` could not be confirmed; treat
> as unknown until verified.

## Sources
- src/WCF/SAIF.Services.WCF.Host/WCF.csproj
- src/WCF/SAIF.Services.WCF.Host/packages.config
- src/WCF/SAIF.Services.WCF.Host/Services/LegacyProxies/FaxServiceProxy.cs
- src/WCF/SAIF.Services.WCF.Host/Web.Base.config
